package net.skystudio.es.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 混合订单实体
 | 业务系统名称 | 系统标识  |
 | ------------ | --------- |
 | 景区门票     | scenic    |
 | 电商         | ec        |
 | 悠游卡       | easyCard  |
 | 轮渡         | ferry     |
 | 租车         | carRental |
 | 礼品卡       | giftCard  |
 | 年卡         | yearCard  |
 | 酒店         | hotal     |
 */
@Data
@Document(indexName = "index_mixed_order")
public class MixedOrder implements Serializable {

    @Id
    private String id;

    /**
     * 系统标识
     */
    @Field(type = FieldType.Keyword)
    private String sid;

    /**
     * 订单号
     */
    @Field(type = FieldType.Keyword)
    private String orderNo;

    /**
     * 混合订单状态(待付款 、待使用、待收货、退款/售后)
     */
    @Field(type = FieldType.Keyword)
    private String orderStatus;

    /**
     * 业务状态ID
     */
    @Field(type = FieldType.Keyword)
    private String bizStatus;

    /**
     * 订单业务状态描述
     */
    @Field(type = FieldType.Text, analyzer = "ik_smart")
    private String bizStatusDesc;

    /**
     * 商品名称
     */
    @Field(type = FieldType.Text, analyzer = "ik_smart")
    private String goodsName;

    /**
     * 商品图片url（支持多个url）
     */
    @Field(type = FieldType.Text, analyzer = "ik_smart")
    private String goodsImg;

    /**
     * 商品描述（支持单条或多条描述，<br/>
     * 例如<br/>
     * （单条）游玩时间：2021-09-09<br/>
     * （多条）取车地址：CCCC，还车地址：XXXX）
     */
    @Field(type = FieldType.Text, analyzer = "ik_smart")
    private String goodsInfo;

    /**
     * 订单描述（展示订单主标题，<br/>
     * 例如
     * 门票订单的主标题为景区名称（动态）
     * 电商订单的主标题为‘在线电商’（固定））
     */
    @Field(type = FieldType.Text, analyzer = "ik_smart")
    private String orderInfo;

    /**
     * 订单总金额
     */
    @Field(type = FieldType.Double)
    private BigDecimal orderAmount;

    /**
     * 礼品卡抵扣金额
     */
    @Field(type = FieldType.Double)
    private BigDecimal giftAmount;

    /**
     * 支付时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern ="yyyy-MM-dd HH:mm:ss", timezone ="GMT+8")
    @Field(type = FieldType.Date, format = DateFormat.custom ,pattern ="yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /**
     * 交易订单号（第三方平台订单号）
     */
    @Field(type = FieldType.Keyword)
    private String tradeNo;

    /**
     * 下单时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern ="yyyy-MM-dd HH:mm:ss", timezone ="GMT+8")
    @Field(type = FieldType.Date, format = DateFormat.custom ,pattern ="yyyy-MM-dd HH:mm:ss")
    private Date orderTime;

    /**
     * 备注
     */
    @Field(type = FieldType.Text, analyzer = "ik_smart")
    private String remark;



}
